package br.com.projetus.persistencia;

import javax.persistence.EntityManager;

/**
 * Exemplo de DAO generico com jpa
 *
 * @author Fabricio S Costa fabriciojf@gmail.com
 * @since 01/12/2009
 * @version 1.0
 */
public class DAOGenerico {

    private static DAOGenerico instance = new DAOGenerico();

    public static DAOGenerico getInstance() {
        if(instance == null) {
        	instance = new DAOGenerico();
        }
    	return instance;
    }

    /*
     * T é uma classe generics você pode passar qualquer classe para ela
     */
    public <T> T save(T objeto) {
        EntityManager em = JpaUtil.getEntityManager();
        em.getTransaction().begin();
        try {
            objeto = em.merge(objeto);
            em.getTransaction().commit();
        } catch (Exception ex) {
            em.getTransaction().rollback();
        }
        return objeto;
    }

    /*
     * T é uma classe generics você pode passar qualquer classe para ela
     */
    public boolean remove(Object objeto) {
        EntityManager em = JpaUtil.getEntityManager();
        em.getTransaction().begin();
        try {
            Object obj = em.merge(objeto);
            em.remove(obj);
            em.getTransaction().commit();
            return true;
        } catch (Exception ex) {
            em.getTransaction().rollback();
            return false;
        }
    }
}
